<?php
/*
http://blog.markplace.net

Bad Behavior - LifeType Plugin
Copyright (C) 2006 Mark Wu http://blog.markplace.net

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

// This file is the entry point for Bad Behavior in LifeType.

if (!defined('PLOG_CLASS_PATH')) die('No cheating!');

define('BB2_CWD', PLOG_CLASS_PATH );
define('BB2_EMERGENCY_EMAIL', "admin@yourblog.com" );

// Bad Behavior callback functions.

// Return current time in the format preferred by your database.
function bb2_db_date() {
	return gmdate('Y-m-d H:i:s');
}

// Return affected rows from most recent query.
function bb2_db_affected_rows() {
	include_once( PLOG_CLASS_PATH."class/database/db.class.php" );
	$db =& Db::getDb();
	
	return $db->Affected_Rows();
}

// Escape a string for database usage
function bb2_db_escape($string) {
    include_once( PLOG_CLASS_PATH."class/database/db.class.php" );    

	return Db::qstr($string);
}

// Return the number of rows in a particular query.
function bb2_db_num_rows($result) {
	return $result->RecordCount();
}

// Run a query and return the results, if any.
// Should return FALSE if an error occurred.
function bb2_db_query($query) {
	include_once( PLOG_CLASS_PATH."class/database/db.class.php" );    
	$db =& Db::getDb();

	$result = $db->Execute( $query );

	if (!$result)
		return false;

	return $result;
}

// Return all rows in a particular query.
// Should contain an array of all rows generated by calling mysql_fetch_assoc()
// or equivalent and appending the result of each call to an array.
function bb2_db_rows($result) {
	$rows = array();
	while( $row = $result->FetchRow()) {
		$rows[] = $row;
	}

	return $rows;
}

// Return emergency contact email address.
function bb2_email() {
	return BB2_EMERGENCY_EMAIL;
}

// retrieve settings from lifetype config
function bb2_read_settings() {
	include_once( PLOG_CLASS_PATH."class/database/db.class.php" );
	include_once( PLOG_CLASS_PATH."class/config/config.class.php" );    
	$config =& Config::getConfig();
	$prefix = Db::getPrefix();
	$displayStats = $config->getValue( 'bb2_display_stats', true );
	$verbose = $config->getValue( 'bb2_verbose', false );
	$isInstalled = $config->getValue( 'bb2_installed', false );
	
	return array('log_table' => $prefix . 'bad_behavior', 
				 'display_stats' => $displayStats,
				 'verbose' => $verbose,
				 'is_installed' => $isInstalled );
}

// write settings to lifetype config
function bb2_write_settings($settings) {
    include_once( PLOG_CLASS_PATH."class/config/config.class.php" );
	$config =& Config::getConfig();

	$config->setValue( 'bb2_display_stats', $settings['display_stats'] );
	$config->setValue( 'bb2_verbose', $settings['verbose'] );
	$config->setValue( 'bb2_installed', $settings['is_installed'] );
	$config->save();
}
	
// installation
function bb2_install() {
	$settings = bb2_read_settings();
	if( $settings['is_installed'] == false )
	{
		bb2_db_query(bb2_table_structure($settings['log_table']));
		$settings['is_installed'] = true;
		bb2_write_settings( $settings );
	}
}

// Return the top-level relative path of wherever we are (for cookies)
function bb2_relative_path() {
    include_once( PLOG_CLASS_PATH."class/config/config.class.php" );
	$config =& Config::getConfig();
	
	$url = parse_url( $config->getValue( 'base_url' ) );
	if( empty($url['path']) )
		return '/';
	else {
		if( substr( $url['path'], -1, 1 ) == '/' )
			return $url['path'];
		else
			return $url['path'] . '/';
	}
}

// Start Bad Behavior investigation
require_once(BB2_CWD . "/bad-behavior/version.inc.php");
require_once(BB2_CWD . "/bad-behavior/core.inc.php");
bb2_install();
$settings = bb2_read_settings();
bb2_start($settings);
?>
